﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using System.Data;

namespace WebApplication1
{
    public partial class AgentesPublico : System.Web.UI.Page
    {
        #region AgentesPublicoDataTableCache
        private DataTable AgentesPublicoDataTableCache
        {
            get
            {
                DataTable objTable = null;
                if (Cache["AgentesPublico.aspxDataTableCache" + Session.SessionID] != null)
                    objTable = (DataTable)Cache["AgentesPublico.aspxDataTableCache" + Session.SessionID];
                return objTable;
            }
            set
            {
                if (value != null)
                {
                    Cache.Insert("AgentesPublico.aspxDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
                }
            }
        }
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                cargarDepartamentos();
                BindDatosAgentesPublico();
               
            }
            else
            {
                if (AgentesPublicoDataTableCache != null)
                {
                    GridAgentesPublico.DataSource = AgentesPublicoDataTableCache;
                    GridAgentesPublico.DataBind();
                }
            }

        }
        #endregion

        #region cargarDepartamentos
        private void cargarDepartamentos()
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                            where object.Equals(a.ZON_PADRE_ID, null)
                            select a;
                if (datos == null) return;
                ddlAgeDepartamentos.DataSource = datos;
                ddlAgeDepartamentos.TextField = "ZON_NOMBRE";
                ddlAgeDepartamentos.ValueField = "ZON_ID";
                ddlAgeDepartamentos.DataBind();
                ddlAgeDepartamentos.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        #region BindDatos
        private void BindDatosAgentesPublico()
        {
            try
            {
                Model.DataClassesAgentesDataContext contexto = new Model.DataClassesAgentesDataContext();
                var datos = from a in contexto.VISTA_LISTADO_AGENTES_SIDANZAs
                            //join d in contexto on a.ZON_ID equals d.ZON_ID
                            //join e in contexto.BAS_ZONAS_GEOGRAFICA1s on d.ZON_PADRE_ID equals e.ZON_ID

                            where
                               ddlAgeMunicipio.Value != null ? a.ZON_ID == ddlAgeMunicipio.Value : a.ZON_ID == a.ZON_ID &&
                               ddlAgeDepartamentos.Value != null ? a.ZON_ID_DEPARTAMENTO == ddlAgeDepartamentos.Value : a.ZON_ID_DEPARTAMENTO == a.ZON_ID_DEPARTAMENTO &&
                            (txtAgeNombreApellido.Text != "" ? a.AGE_NOMBRES_APELLIDOS.Contains(txtAgeNombreApellido.Text) : a.AGE_NOMBRES_APELLIDOS == a.AGE_NOMBRES_APELLIDOS)

                            

                            select new
                            {
                                a.AGE_ID,
                                a.AGE_NOMBRES_APELLIDOS,
                                a.Departamento,
                                a.Municipio,
                                a.AREA,
                                a.AGE_CORREO_ELECTRONICO,
                                a.AGE_GENERO,
                                a.AGE_PAGINA_WEB
                            };
                if (datos == null) return;
                GridAgentesPublico.BeginUpdate();
                GridAgentesPublico.DataSource = datos;
                GridAgentesPublico.DataBind();
                GridAgentesPublico.EndUpdate();
                AgentesPublicoDataTableCache = GetDataView(GridAgentesPublico);
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }
        #endregion

        #region GetDataView
        private DataTable GetDataView(ASPxGridView grid)
        {
            DataTable dt = new DataTable();
            foreach (GridViewColumn col in grid.VisibleColumns)
            {
                GridViewDataColumn dataColumn = col as GridViewDataColumn;
                if (dataColumn == null) continue;
                dt.Columns.Add(dataColumn.FieldName);
            }
            for (int i = 0; i < grid.VisibleRowCount; i++)
            {
                DataRow row = dt.Rows.Add();
                foreach (DataColumn col in dt.Columns)
                    row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
            }
            return dt;
        }
        #endregion

        #region ASPxCallback1_Callback

        protected void ASPxCallback1_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)
        {
            int newsID = int.Parse(e.Parameter);


            DataSourceSelectArguments argumentos = new DataSourceSelectArguments();
            DataView dv = (DataView)SqlDataSourceDescripcion.Select(DataSourceSelectArguments.Empty);
            DataTable dt = dv.ToTable();
            foreach (DataRow row in dt.Rows)
            {
                if (row["ENT_ID"].ToString() == newsID.ToString())
                    e.Result = row["ENT_RESENA"].ToString();
            }
        }
        #endregion

        #region ddlAgeDepartamentos_SelectedIndexChanged
        protected void ddlAgeDepartamentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlAgeDepartamentos.Value == null)
            {
                ddlAgeMunicipio.Items.Clear();
                ddlAgeMunicipio.Value = null;
                return;
            }

            if (ddlAgeDepartamentos.Value.ToString() == "")
            {
                ddlAgeMunicipio.Items.Clear();
                return;
            }
            if (ddlAgeDepartamentos.Value.ToString() == "0")
            {
                ddlAgeMunicipio.Items.Clear();
                return;
            }
            //ddlMunicipio.Items.Clear();
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                        where object.Equals(a.ZON_PADRE_ID, ddlAgeDepartamentos.Value)
                        select a;
            if (datos == null) return;
            ddlAgeMunicipio.DataSource = datos;
            ddlAgeMunicipio.TextField = "ZON_NOMBRE";
            ddlAgeMunicipio.ValueField = "ZON_ID";
            ddlAgeMunicipio.DataBind();

            ddlAgeMunicipio.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--Todos--", ""));
            ddlAgeMunicipio.Value = "";
        }
        #endregion

        #region btnAgeBuscar_Click
        protected void btnAgeBuscar_Click(object sender, EventArgs e)
        {
            BindDatosAgentesPublico();
        } 
        #endregion

        #region GridAgentesPublico_RowCommand
        protected void GridAgentesPublico_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e)
        {
            if (e.KeyValue.ToString() != "")
            {
                try
                {
                    Model.DataClassesAgentesDataContext contexto = new Model.DataClassesAgentesDataContext();
                    var datos = from a in contexto.VISTA_LISTADO_AGENTES_SIDANZAs

                                where
                                    a.AGE_ID == Convert.ToInt32(e.KeyValue.ToString())
                                select new
                                {
                                    a.AGE_ID,
                                    a.AGE_NOMBRES_APELLIDOS,
                                    a.AGE_GENERO,
                                    a.AGE_TIPO,
                                    a.AGE_NUMERO_DOCUMENTO,
                                    a.Departamento,
                                    a.Municipio,
                                    a.AGE_AREA,
                                    a.AGE_CORREO_ELECTRONICO,
                                    a.AGE_PAGINA_WEB,
                                    a.AREA,
                                    
                                    
                                };

                    if (datos != null)
                    {
                        //existen proponentes y proyectos
                        //verifica el si es propietario del registro
                        foreach (var v in datos)
                        {
                            ///////////////////////////////////
                            //   CARGAR DETALLE AGENTES      //
                            ///////////////////////////////////
                            lblAGE_NOMBRES_APELLIDOS.Text = v.AGE_NOMBRES_APELLIDOS;
                            lblAGE_GENERO.Text = v.AGE_GENERO.ToString();
                            lblAGE_TIPO_DOCUMENTO.Text = v.AGE_TIPO;
                            lblAGE_NUMERO_DOCUMENTO.Text = v.AGE_NUMERO_DOCUMENTO.ToString();
                            lblAGE_DEPARTAMENTO.Text = v.Departamento;
                            lblAGE_MUNICIPIO.Text = v.Municipio;
                            lblAGE_AREA.Text = v.AGE_AREA.ToString();
                            lblAGE_CORREO_ELECTRONICO.Text = v.AGE_CORREO_ELECTRONICO;
                            lblAGE_PAGINA_WEB.Text = v.AGE_PAGINA_WEB;
                            lblAGE_AREA_ARTISTICA.Text = v.AREA;
                           
                        }

                    }

                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
            }
        #endregion
        }
    }
}